package com.demo.image;

import net.coobird.thumbnailator.Thumbnails;

import java.io.IOException;

/**
 * @author wangning
 * @date 2023/6/14 10:58
 * 图片压缩
 * 1.指定大小比例进行缩放--考虑图片的完整度
 *   size(宽度, 高度)
 * 2.按照比例进行缩放
 *   scale(比例)
 * 3.不按照比例，指定大小进行缩放--不考虑图片的完整度
 *   size(宽度, 高度).keepAspectRatio(false)
 * 4.图片旋转
 *   size(宽度, 高度).rotate(90) -- 旋转90度(必须加size不然报错)
 * 5.水印
 *   BOTTOM_RIGHT 右下角
 *   CENTER       中心
 *   size(宽度, 高度).watermark(Positions.CENTER,)
 *       .size(1280, 1024)
 *       .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("d:/uploadImg/head.png")), 0.5f)
 *       .outputQuality(0.8f)
 *       .toFile(dest);
 * 6.裁剪 -- 以图片中心400*400区域
 *   .sourceRegion(Positions.CENTER, 400,400)
 *   .size(200,200).keepAspectRatio(false)
 * 7.转化图像格式
 *   .size(200,200).outputFormat(".png")
 */
public class ImageCompression {
    public static void main(String[] args) throws IOException {
        String source = "springboot-utils/src/main/java/com/demo/image/测试图片压缩原图.jpg";
        String target = "springboot-utils/src/main/java/com/demo/image/测试图片压缩原图2.jpg";
        Thumbnails.of(source)//原图文件的路径
                .scale(0.4f) // 值在0到1之间,1f就是原图大小,0.5就是原图的一半大小
                .outputQuality(0.2f) // 值也是在0到1,越接近于1质量越好,越接近于0质量越差
                .toFile(target);//压缩后文件的路径


    }
}
